package in.co.codedoc.json.mapper;

import in.co.codedoc.cg.annotations.IsAJSONMapper;
import in.co.codedoc.json.JSONDecoderMethod;
import in.co.codedoc.json.JSONEncoderMethod;
import in.co.codedoc.json.JSONLongValue;
import in.co.codedoc.json.JSONObjectValue;
import in.co.codedoc.time.Day;

@IsAJSONMapper
public class DayJSONMapper
{
	@JSONEncoderMethod
	public static JSONObjectValue Encode(Day day)
	{
		JSONObjectValue json = new JSONObjectValue();
		
		if(day != null)
		{
			json.SetProperty("dd", new JSONLongValue(day.GetDay()));
			json.SetProperty("mm", new JSONLongValue(day.GetMonth()));
			json.SetProperty("yy", new JSONLongValue(day.GetYear()));
		}
		
		return json;
	}
	
	@JSONDecoderMethod
	public static Day Decode(JSONObjectValue json)
	{
		return json == null || !json.HasProperty("yy") ||!json.HasProperty("mm") || !json.HasProperty("dd")
		?
			null
		:
			new Day
			(
					(int)((JSONLongValue)json.GetProperty("yy")).GetValue(),
					(int)((JSONLongValue)json.GetProperty("mm")).GetValue(),
					(int)((JSONLongValue)json.GetProperty("dd")).GetValue()
			);
	}	
}
